Technology for streaming video continues to be developed, and advances in technology have led to increases in available bandwidth for both wired and wireless delivery mechanisms used to deliver services to a customer. Moreover, the quality at which media may be displayed at a client device continues to improve. Networks used for delivering these streaming video services have become dominated by video streaming.
In order to facilitate quicker initiation of content playback at a client device, progressive download methods are commonly selected for content delivery in place of traditional delivery methods wherein a media file is fully downloaded prior to beginning playback of the media. Progressive download, is a method wherein video is transferred to a client device as a file using the HTTP application layer protocol. As soon as enough video is received at the client device, the client device may begin playback of the video. Progressive downloading presents various problems, including, but not limited to insufficient bandwidth, fluctuations in available bandwidth, fluctuations in video encoding bit-rate, excessive bandwidth available, issues created during trickplay of a stream, and various others.
The available bandwidth on a link between a video server and a client device may be lower than the video stream bandwidth. In such scenarios, the video will not be downloaded fast enough and as a result the client device will be starved. Thus, insufficient bandwidth may result in intermittent pausing/stopping during playback.
The network connecting the server and the client device typically includes many links between routers, each having a different available bandwidth. The number of users sharing each link can be large and can vary over time. Moreover, wireless local area network (WLAN) (e.g., Wi-Fi links), which are typically the last hop in a route, may exhibit fluctuations in available bandwidth. These fluctuations in available bandwidth may adversely affect a media session that is being delivered to a client device. For example, in a scenario where the link bandwidth fluctuates over time, the user may experience problems even though the average link bandwidth is higher than the nominal stream bandwidth. This may result from a local minimum in the link bandwidth which will not enable a continuous streaming.
A video encoder may encode different parts of the video stream in different bitrates. This can happen locally, on a scale of a few seconds, even in the case where the encoder was configured to output a variable bit-rate (VBR) stream. During periods when the encoded video bit-rate is higher than the average, it is possible that the available bit-rate for the client device is insufficient for continuous playback. In such a case, the playback may freeze, even though on average the bit-rate available for the client device is sufficient for the video.
When the available bandwidth between the server and the client device is higher than the nominal stream bandwidth, video data may accumulate at the client device's video playback buffer. If the client device stops the video playback before the entire stream is played, all of the accumulated data at the playback buffer may be discarded without being output from the buffer for viewing.
When a client device requests a certain remote video asset, the video playback may not start upon the arrival of the first video byte to the client device. Rather, the video playback is delayed, in order to allow accumulation of video playback buffer at the client device. This delay also occurs when the client device seeks forward or backward in the media content, thus making the previously transmitted data irrelevant. This delay may have a typical length of several seconds, and can result in degradation to the user experience.
A common link layer protocol for video transmission over the Internet is transmission control protocol (TCP). According to TCP, a dynamic attempt is made to estimate a link's parameters (e.g., bandwidth, Round Trip Time (RTT), etc.), and transmission is adjusted accordingly. Further, an attempt is made to share available bandwidth evenly between TCP client devices. This probing functionality has a cost in terms of transmission efficiency. As a result, a sender that knows the available bandwidth for the stream may better utilize the link.
Progressive downloading has become the preferred approach for video streaming by many content providers, and multiple attempts have been made to solve the various problems presented by this delivery method.
A content delivery network (CDN) was developed to alleviate bandwidth fluctuation issues created by progressive downloading. A CDN is a network of caching proxy servers, and is commonly located as close as possible to a client device. A CDN shortens the distance between the client device and the video server, resulting in a wider channel with less bandwidth fluctuation. However, the solution for the bandwidth problems is only partial, because the route between the client device and the proxy server may still exhibit problems of insufficient or fluctuating bandwidth.
Bit rate throttling is a feature in a video streaming server that controls the rate at which data is being transmitted to a user. The video streaming server analyzes the video file sent to the user, determines its encoding bit rate, and sets its transmission bit rate accordingly. When a new user starts receiving video, the video streaming server sets the transmission bit rate to be higher than the encoding bit rate in order to reduce the startup delay at the user device.
Adaptive bit-rate (ABR) is a method that enables each client device to receive an appropriate version of a piece of multimedia content (e.g., video), according to its available bandwidth. For example, a piece of multimedia content (e.g., video) is encoded in several versions, each version being encoded in a different bit-rate. Using ABR, each version of the content is encoded in segments. A segment is a part of the content stream that can be concatenated to its subsequent segment from a different version in a way which appears seamless to a media player. As an example, segment duration is typically somewhere between 2-10 seconds in duration.
The client device may be configured to sense the available bandwidth, and to select the appropriate version accordingly. For example, an adaptive streaming client device can measure its available bandwidth and playback buffer state, and according to those inputs, can request the segment of the appropriate version of the content.
The ABR method attempts to resolve the problem of having too little and too much bandwidth, as well as addressing fluctuation in bandwidth. ABR also improves the start/seek delay by selecting versions with smaller sizes when the playback buffer is low. However, ABR also creates a new quality of experience (QoE) problem, whereby the quality of the received stream is inconsistent.
When bandwidth is equally shared between different types of client devices, one client device may be able to receive a higher quality version of a certain piece of content than another client device. For example, high quality video for a high-definition television may consume more bandwidth than a high quality version of video encoded for a mobile device (e.g., tablet, mobile phone, etc.). Inequality in the QoE (or video quality) can also occur between client devices of the same type. For example, when encoding a video sequence, the encoder may require more bits for complex scenes than the bits required for a simple scene. In a scenario where one client device displays a complex scene, which requires a higher bit rate for a certain quality, and another client device displays a simple scene, which requires a lower bit rate for the same quality, the TCP, being oblivious to video quality, will receive equal bandwidth for both user devices, hence causing an inequality in video quality.
ABR attempts to solve the problems of fluctuating available bandwidth and fluctuating video encoding bit-rate, but does so based only on data received at the user device. However, consistent video quality may be an important factor to consider in ABR decisions. Moreover, service providers may benefit from understanding what a user is experiencing in order to provide a better service. When a service provider is able to understand the quality of a service that is received at a customer premise, or even more specifically, on a certain client device, the service provider can more effectively and efficiently solve an issue with the provided service. Therefore, a need exists for improved methods and systems for monitoring video quality of experience (VQoE) of video services received at client devices.
Like reference numbers and designations in the various drawings indicate like elements.